home *** CD-ROM | disk | FTP | other *** search
- program Plasma_Pascal;
-
- uses crt;
-
- var Wert1,Wert2,Wert3,Wert4 : byte;
- TWert1,TWert2,TWert3,TWert4 : byte;
- SinTab : array[0..255] of byte;
- n1,n2 : word;
- col : byte;
-
- procedure SetPal(col,r,g,b:byte);
- begin
- port[$3C8] := col;
- port[$3C9] := r;
- port[$3C9] := g;
- port[$3C9] := b;
- end;
-
- procedure CalcSinus(Ofs,Amp:byte;Len,Par:word);
- begin
- for n1 := 0 to Len do SinTab[n1] := round(sin(n1/Par*pi*Len/180*2)*Amp)+Ofs;
- end;
-
-
- begin
- CalcSinus(32,31,255,360);
- asm mov ax,13h; int 10h end;
- for n1 := 0 to 127 do begin
- setpal(n1,n1 div 6,n1 div 3,n1 div 3);
- setpal(255-n1,n1 div 6,n1 div 3,n1 div 3);
- end;
- repeat
- TWert3 := Wert3;
- TWert4 := Wert4;
- for n1 := 0 to 319 do begin
- TWert1 := Wert1;
- TWert2 := Wert2;
- for n2 := 0 to 199 do begin
- col := SinTab[TWert1] + SinTab[TWert2] +
- SinTab[TWert3] + SinTab[TWert4]; { Farbwert berechnen }
- mem[$A000:n2*320+n1] := col;
- inc(TWert1,4);
- inc(TWert2,3);
- end;
- inc(TWert3,4);
- inc(TWert4,5);
- end;
- dec(Wert1,4); { Bewegung des Plasmas }
- inc(Wert3,4);
- inc(Wert1,random(1)); { Zufallswerte bewirken, daß das Plasma }
- dec(Wert2,random(2)); { etwas unregelmäßig wird }
- inc(Wert3,random(1));
- dec(Wert4,random(2));
- until keypressed;
- readkey;
- asm mov ax,3; int 10h end;
- end.
-